﻿using System;

namespace CoreTypes
{
   public enum ServerType
   {
      Native,
      Global,
      Satellite,
      Local
   }

   public enum VendorPage
   {
      HomePage,
      RegisterUser,
      PersonalInfo,
      RestorePassword
   }

   public enum ContentType
   {
      Text = 0,
      Html = 1,
      Wake = 2,
      Alarm = 4,
      Sound = 8,
      Video = 16,
      RichText = 32,
      Emoticon = 64,
      Animation = 128
   }

   public enum ServiceRole
   {
      Default = 0,
      Authorise = 1,
      Messaging = 2,
      UserCatalog = 4,
      MediaHosting = 8,
      UpdatesDownload = 16
   }

   public enum StatusCodes
   {
      Online = 0,
      Offline = 10,
      Phantom = 4,
      Invisible = 1,
      SeemsAway = 2,
      NotAvailable = 3
   }

   public enum PolicyRule
   {
      None,
      Allow,
      Ignore,
      Block,
      Deny,
      Ask
   }
   [Flags]
   public enum PrivacyType
   {
      All = 0,
      BlockMessage = 1,
      BlockInvitation = 2,
      BlockVisibility = 4,
   }

   public enum PrivacyRule
   {
      None,
      Anyone,
      MyContats,
      VipContacts,
      Nobody
   }

   public enum ActionSource
   {
      Unknown,
      User,
      Code,
   }

   public enum PrivacyLevel
   {
      Low,
      Medium,
      High,
      Strong
   }

   public enum InfoStrings
   {
      EmailLike,
      NameStatus,
      NameService,
      ServiceLogin,
      NameServiceLogin,
      NameServiceStatus,
      NameServiceFullStatus,
   }

   public enum TargetWindow
   {
      Default,
      Blank,
      Existing,
   }

   public enum LogViewStyle
   {
      Simple,
      Standard
   }
   [Flags]
   public enum MessageTypes
   {
      None = 0,
      ChatMessage = 1,
      SessionInvitation = 2,
      PresenceNotification = 4
   }

   public enum SessionState
   {
      Ready,
      Closed,
      Waiting,
      Sending,
      Establishing,
      Synchronizing
   }

   public enum ServiceFields
   {
      Unknown = -1,
      Id = 1000,
      Name,
      Email,
      Username,
      Nickname,
      FullName,
      FirstName,
      MiddleName,
      LastName,
      Birthday,
      Age,
      PersonalUrl,
      Address,
      CellPhone,
      City,
      Country,
      Language,
      Fax,
      Phone,
      State,
      Zip,
      Userpic,
      Gender,
      Height,
      Weight,
      Blood,
      Keywords,
      Description,
      Organization,
      Department,
      Role,
      WorkUrl,
      WorkEmail,
      WorkAddress,
      WorkCellPhone,
      WorkCity,
      WorkCountry,
      WorkFax,
      WorkPhone,
      WorkState,
      WorkZip,
      NetworkStatus,
   }

   public enum ContactsState
   {
      Initial,
      Updated,
      StatusUpdated
   }

   public enum ServiceActions
   {
      NONE = 1000,
      RESULT,
      PREREGISTER,
      REGISTER,
      LOGON,
      LOGOFF,
      STATUS,
      SEEKUSERS,
      TXTMSG,
      MSGACK,
      MSGUPD,
      MSGTYPING,
      SESSIONREQ,
      SESSIONACK,
      SESSIONUPD,
      SAVEINFO,
      SAVEINFOEX,
      AUTHREQ,
      AUTHRESP,
      SHOWINFO,
      SHOWINFOEX,
      SHOWPICT,
      SAVECL,
      LOADCL,
      SAVESETT,
      LOADSETT,
      LOADSTRS,
      PEERREQ,
      SERVREQ,
      PUTFILEREQ,
      GETFILEREQ,
      PRELOGON,
      GETCTRLIMG,
      DISCOVERSVC,
      PASSWORD,
      SETPERMISSIONS,
   }

   public enum ServiceFeatures
   {
      AddGroup,
      AllowList,
      BlockList,
      AddContact,
      FindPerson,
      AddSubgroup,
      RemoveGroup,
      PeopleSearch,
      SearchByMask,
      AuthCurrentUser,
   }

   public enum OperationState
   {
      None,
      Faulted,
      DataSent,
      Callback,
      Completed,
      Cancelled,
      HostLookup,
      DataSending,
      Initialization,
   }

   public enum WindowDockType
   {
      FloatPanel,
      ClosurePanel,
      EmbeddedPanel,
      ClassicWindowLarge,
      ClassicWindowNormal
   }

   public enum SessionSubtype
   {
      Personal,
      Conference,
      Translation
   }

   public enum ServiceNodeType
   {
      None,
      Peer,
      Server,
      Global
   }

   public enum ErrorReasonCode
   {
      Unknown,
      Timeout,
      Network,
      DriverFault,
      Credentials,
      ExistAlready,
      NotSupported,
      DeliverFailed,
      ServerInternal,
      ServiceFailure,
      EmptyArguments,
      LoggedInAlready,
      InvalidArguments,
      NoMeaningfulResult,
      ConnectionRequired
   }

   public enum ColorThemeObject
   {
      Menu,
      Area,
      Hint,
      PanelH,
      PanelV,
      Header,
      Header2,
      Button,
      Window,
      AppMenu,
      Pattern,
      MenuItem,
      ToolStrip,
      Background,
      StatusStrip,
      ControlPanel,
      ToolStripButton,
      AppMenuWithToolStrip,
      ToolStripWithAppMenu,
   }

   public enum SystemFieldCodes
   {
      PROTOIDENT = 1,
      PROTOVERSION,
      INVOKECODE,
      OPERATION,
      MESSAGENUMBER,
      STEPNUMBER,
      SENDER,
      RECIPIENT,
      DATASIZE,
      ERRNUM,
      ERRMSG,
      ERRDSC,
      RESULT,
      NUMBER,
      STRING,
      FLAG,
      TEXT,
      LANG,
      RPCFUNCTION,
      RPCMODULE,
      TIMESTAMP,
      TYPE,
      LENGTH,
      VALUE
   }

   public enum ContactsSortStyle
   {
      Caption,
      CaptionWidth
   }

   public enum SessionVisibility
   {
      Public,
      Private,
      Protected
   }

   public enum SessionJoinFilter
   {
      Ask,
      Auto,
      Deny,
      Keyed
   }

   public enum SessionHostingType
   {
      None,
      Local,
      Custom,
      Default
   }
   [Flags]
   public enum SaveAccountActions
   {
      None = 0,
      SaveInfo = 1,
      AddGroup = 2,
      MoveGroup = 4,
      AddContact = 8,
      MoveContact = 16,
      RemoveGroup = 32,
      SaveContacts = 64,
      SaveSettings = 128,
      RemoveContact = 256,
      UploadUserpic = 512,
      ChangePassword = 1024,
      ModifyContact = 2048,
      RenameContactsItem = 4096,
   }

   public enum SessionAcceptResult
   {
      OK,
      Wait,
      Deny,
      TypeMissed,
      ExistAlready
   }

   public enum MessageUpdateOptions
   {
      Mark,
      Content,
      Acknowledges,
      PeerTimestamp,
      LocalTimestamp,
      ServerInTimestamp,
      ServerOutTimestamp
   }
   [Flags]
   public enum ContactsChangedActions
   {
      None = 0,
      Add = 1,
      Modify = 2,
      Move = 4,
      Hide = 8,
      Block = 16,
      Remove = 32,
      RemoveContents = 64,
   }
   [Flags]
   public enum SaveMediaSessionActions
   {
      Update = 0,
      ChangeSubject = 1,
      AddParticipant = 2,
      RemoveParticipant = 4,
      BlockParticipant = 8,
      UnblockParticipant = 16,
   }
}